﻿/*
SINACOR - BMF&Bovespa
Arquivo: ControleMovimentoOrdens.cs
Criado em: 27-nov-2009 11:59:15
Arquiteto Responsável: ramelo.7comm
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.ServiceModel;
using System.Text;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using Sinacor.UI.Bovespa.Alocacao.Communication.Bovespa.Alocacao.CoberturaTermo;
using Sinacor.UI.Bovespa.Alocacao.Communication.Bovespa.Movimento.ControleMovimentoOrdens;

namespace Sinacor.UI.Bovespa.Alocacao.Communication
{
    /// <summary>
    /// Class ControleMovimentoOrdens 
    /// </summary>
    public class ControleMovimentoOrdens : BaseCommunication
    {

        #region Construtores

        /// <summary>
        /// Construtor padrão
        /// </summary>
        public ControleMovimentoOrdens()
            : base(default(SessionInformation))
        {
        }

        /// <summary>
        /// Construtor parametrizado
        /// </summary>
        /// <param name="sessionInformation"></param>
        public ControleMovimentoOrdens(SessionInformation sessionInformation)
            : base(sessionInformation)
        {
        }
        #endregion Construtores

        #region Métodos

        /// <summary>
        /// ObterInformacoesMovimento
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public Model.InformacoesMovimento ObterInformacoesMovimento(Model.DataMovimento request)
        {
            Model.InformacoesMovimento response = null;
            IControleMovimentoOrdens servico = null;

            try
            {
                using (ServiceInstance<IControleMovimentoOrdens> service = new ServiceInstance<IControleMovimentoOrdens>())
                {
                    servico = service.TryGetInstance(this.Session);
                    response = new Translator.DataContractToModel.ControleMovimentoOrdens().ToInformacoesMovimento(
                        servico.ObterInformacoesMovimento(
                        new Translator.ModelToDataContract.ControleMovimentoOrdens().ToDataMovimentoRequest(request)
                        ));
                }
            }
            catch (Exception ex)
            {
                base.HandleFault(ex);
                return null;
            }

            return response;
        }

        #endregion Métodos
    }
}